類是Swift結構體中更加高級的一種資料類型,程式開發中許多較為複雜的場景都是透過類來實例的,簡單說,類是程式世界中的抽象模擬,使用類可以來模擬各種對象,以FPS遊戲為例,遊戲中的武器、主角、道具、敵人,都是類。
Swfit中類是使用class這個關鍵字來宣告,我們使用類來模擬汽車模型。
class ClassCar {
var price: Int
var brand: String
var petrol: Int
func drive() {
if petrol > 0{
petrol -= 1
print("drive 10 mile")
}
}
func addPetrol() {
petrol += 10
print("plus 10")
}
init(price :Int, brand: String, petrol: Int){
self.price = price
self.brand = brand
self.petrol = petrol
}
}
分析上面建立的classCar可以發現,類與結構的建立屬性的程式碼基本一樣,差別在於結構體中開發者不需要提供構造方法,結構體會根據屬性來自動生成一個構造方法,而類則是需要開發者自己提供構造方法,在 init() 構造方法中,需要完成對類中所有屬性的賦值操作。
// 建立ClassCar實例
var car = Car(price: 100000, brand: "BMW", pertorl: 10)
// 訪問屬性
print("\(car.brand) + \(car.price) + \(car.pertorl)")
// 呼叫方法
for _ in 0...10 {
if car.pertorl == 0 {
car.addPetrol()
}else{
// 進行行走路線行為
car.drive()
}
}
可以看出類與結構體一樣,也是透過點語法來完成屬性方法的呼叫訪問,和結構體不同的是,類是引用類型,對實例進行資料傳遞的時後不會產生複製行為,因此如果要將類實例傳遞給新的變數,修改新的變數則會影響到原始變數。
// 建立ClassCar實例
var car = Car(price: 100000, brand: "BMW", pertorl: 10)
// 訪問屬性
print("(car.brand) + (car.price) + (car.pertorl)")
// 建立另一個變數來進行值的傳遞
var car2 = car
car2.price = 50000
print("Price: (car.price) Price: (car2.price)")
// 將印出 Price: 50000 Price: 50000
接下來,是屬性的介紹